package org.x.casemodule.controller;

import com.mybatisflex.core.paginate.Page;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.x.casemodule.service.IGeneratedDocumentService;
import org.x.casemodule.entity.GeneratedDocumentEntity;
import org.springframework.web.bind.annotation.RestController;
import org.x.common.config.Result;
import org.x.common.enums.LogAsync;

import java.io.Serializable;
import java.util.List;

/**
 * 生成文书表 控制层。
 *
 * @author mybatis-flex-helper automatic generation
 * @since 1.0
 */
@RestController
@RequestMapping("/api/doc1")
public class GeneratedDocumentController {

    @Autowired
    private IGeneratedDocumentService generatedDocumentService;

    /**功能点	类型	接口URL	功能说明
     申请书生成	核心功能	/api/doc/application	根据案件信息自动生成申请书模板
     法律条款引用	核心功能	/api/doc/laws	自动关联相关法律条款并支持插入文档
     文书模板管理	后台功能	/api/doc/templates	管理员管理文书模板（添加、编辑、删除）
     文书草稿保存	辅助功能	/api/doc/draft	保存用户正在编辑的文书草稿
     文书在线编辑	核心功能	/api/doc/editor	提供富文本编辑器进行文书编辑
     文书导出	辅助功能	/api/doc/export	将文书导出为Word/PDF格式
     文书预览	辅助功能	/api/doc/preview	预览文书效果（支持水印）
     文书签名	安全功能	/api/doc/sign	用户对文书进行电子签名
     */



    /**
     * 添加 生成文书表
     *
     * @param generatedDocument 生成文书表
     * @return {@code true} 添加成功，{@code false} 添加失败
     */
    @LogAsync("生成文书表1")
    @PostMapping("/save")
    public boolean save(@RequestBody GeneratedDocumentEntity generatedDocument) {
        return generatedDocumentService.save(generatedDocument);
    }


    /**
     * 根据主键删除生成文书表
     *
     * @param id 主键
     * @return {@code true} 删除成功，{@code false} 删除失败
     */
    @LogAsync("根据主键删除生成文书表1")
    @DeleteMapping("/remove/{id}")
    public boolean remove(@PathVariable Serializable id) {
        return generatedDocumentService.removeById(id);
    }


    /**
     * 根据主键更新生成文书表
     *
     * @param generatedDocument 生成文书表
     * @return {@code true} 更新成功，{@code false} 更新失败
     */
    @LogAsync("根据主键更新生成文书表1")
    @PutMapping("/update")
    public boolean update(@RequestBody GeneratedDocumentEntity generatedDocument) {
        return generatedDocumentService.updateById(generatedDocument);
    }


    /**
     * 查询所有生成文书表
     *
     * @return 所有数据
     */
    @LogAsync("查询所有生成文书表1")
    @GetMapping("/list")
    public Result list() {
        List<GeneratedDocumentEntity> list = generatedDocumentService.list();
        return Result.ok(list);
    }


    /**
     * 根据生成文书表主键获取详细信息。
     *
     * @param id generatedDocument主键
     * @return 生成文书表详情
     */
    @LogAsync("根据生成文书表主键获取详细信息1")
    @GetMapping("/getInfo/{id}")
    public GeneratedDocumentEntity getInfo(@PathVariable Serializable id) {
        return generatedDocumentService.getById(id);
    }


    /**
     * 分页查询生成文书表
     *
     * @param page 分页对象
     * @return 分页对象
     */
    @LogAsync("分页查询生成文书表1")
    @GetMapping("/page")
    public Page<GeneratedDocumentEntity> page(Page<GeneratedDocumentEntity> page) {
        return generatedDocumentService.page(page);
    }
}